package com.xygz.orm.enums;

/**
 * SQL 格式化模式
 *
 * @author xiyuan-lgz 2023-12-09 @version v1.0.0 新建与整理
 */
public enum FormatType {
    /**
     * 经过编译处理的SQL，，
     * <p>
     * 例如：
     * <p>
     * select * from tab where col1 = ? and col2 = ?
     */
    PREPARED("prepared"),
    
    /**
     * 进过编译处理的SQL,并且美化SQL，
     * <p>
     * 例如：
     * <p>
     * <pre>
     * SELECT
     * 	*
     * FROM
     * 	tab
     * WHERE
     * 	col1 = ?
     * 	AND col2 = ?
     * </pre>
     */
    PREPARED_PRETTY("prepared-pretty"),
    
    /**
     * SQL拼接方式 格式化。
     * <p>
     * 例如：
     * <p>
     * select * from tab where col1 = '张三' and col2 = '李四'
     */
    CONCAT("concat"),
    
    /**
     * SQL拼接方式并且美化SQL。
     * 例如：
     * <p>
     * <pre>
     * SELECT
     * 	*
     * FROM
     * 	tab
     * WHERE
     * 	col1 = '张三'
     * 	AND col2 = '李四'
     * </pre>
     */
    CONCAT_PRETTY("concat-pretty");
    
    private final String code;
    
    
    FormatType(String code) {
        this.code = code;
    }
    
    public String getCode() {
        return code;
    }
    
    
    public static FormatType of(String code) {
        
        FormatType[] ls = FormatType.values();
        for (int i = 0; i < ls.length; i++) {
            FormatType type = ls[i];
            if (type.name().equalsIgnoreCase(code) || type.code.equalsIgnoreCase(code)) {
                return type;
            }
            
        }
        return null;
    }
}
